package groupmanagement;

import java.util.ArrayList;
import java.util.List;

import partnermanagement.IKind;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Home
 */
public class Gruppe implements IGruppe {

    protected int id;
    protected String name;
    protected Gruppenart art;
    protected boolean hasFruehdienst;
    protected boolean hasSpaetDienst;
    protected int gruppenlimit;
    private List<IAnmeldung> anmeldungen;
    
    @Override
    public int getId() {
        return id;
    }

    @Override
    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }

    public Gruppe(int id, String name, Gruppenart art, boolean hasFruehdienst,
            boolean hasSpaetDienst, int gruppenlimit) {
        super();
        this.id = id;
        this.name = name;
        this.art = art;
        this.hasFruehdienst = hasFruehdienst;
        this.hasSpaetDienst = hasSpaetDienst;
        this.gruppenlimit = gruppenlimit;
        this.anmeldungen = new ArrayList<IAnmeldung>();
    }
    
    public Gruppe(int id, String name, Gruppenart art, boolean hasFruehdienst,
            boolean hasSpaetDienst, int gruppenlimit, List<IKind> angemeldet, List<IAnmeldung> anmeldungen) {
        super();
        this.id = id;
        this.name = name;
        this.art = art;
        this.hasFruehdienst = hasFruehdienst;
        this.hasSpaetDienst = hasSpaetDienst;
        this.gruppenlimit = gruppenlimit;
        this.anmeldungen = anmeldungen;
    }
    

    @Override
    public Gruppenart getArt() {
        return art;
    }

    @Override
    public void setArt(Gruppenart art) {
        this.art = art;
    }

    @Override
    public boolean isHasFruehdienst() {
        return hasFruehdienst;
    }

    @Override
    public void setHasFruehdienst(boolean hasFruehdienst) {
        this.hasFruehdienst = hasFruehdienst;
    }

    @Override
    public boolean isHasSpaetDienst() {
        return hasSpaetDienst;
    }

    @Override
    public void setHasSpaetDienst(boolean hasSpaetDienst) {
        this.hasSpaetDienst = hasSpaetDienst;
    }

    @Override
    public int getGruppenlimit() {
        return gruppenlimit;
    }

    @Override
    public void setGruppenlimit(int gruppenlimit) {
        this.gruppenlimit = gruppenlimit;
    }
    
    public String toString(){
        return this.getName();
    }

	@Override
	public List<IAnmeldung> getAnmeldungen() {
		return this.anmeldungen;
	}

	@Override
	public List<IAnmeldung> getAnmeldungen_angemeldet() {
		List<IAnmeldung> result = new ArrayList<IAnmeldung>();
		
		for(IAnmeldung anm:this.anmeldungen){
			if(anm.getStatus() == AnmeldeStatus.ANGEMELDET){
				result.add(anm);
			}
		}
		return result;
	}

	@Override
	public List<IAnmeldung> getAnmeldungen_warteliste() {
List<IAnmeldung> result = new ArrayList<IAnmeldung>();
		
		for(IAnmeldung anm:this.anmeldungen){
			if(anm.getStatus() == AnmeldeStatus.WARTELISTE){
				result.add(anm);
			}
		}
		return result;
	}

}
